﻿/*********************************************************
 * 开发人员：小兵
 * 创建时间：2012-10-26 14:02:57
 * 描述说明：
 * 
 * 更改历史：
 * 
 * *******************************************************/
namespace Mozlite.Components
{
    using System;
    using System.Web;
    using System.Data;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    /// <summary>
    /// 模型基类。
    /// </summary>
    public abstract class BaseContentModule<T> : IContentModule, IUrlRoutable where T : BaseContentModule<T>, new()
    {
        /// <summary>
        /// 模型ID。
        /// </summary>
        public abstract Guid ModuleID { get; }
        /// <summary>
        /// 模型名称。
        /// </summary>
        public virtual string ModuleName { get { return typeof(T).Name; } }
        /// <summary>
        /// 分组名称。
        /// </summary>
        public abstract string GroupKey { get; }
        /// <summary>
        /// 前台默认分类页面地址。
        /// </summary>
        public abstract string DefaultUrl { get; }
        /// <summary>
        /// 前台默认分类分页页面地址。
        /// </summary>
        public abstract string PagerUrl { get; }
        /// <summary>
        /// 前台默认访问页面地址。
        /// </summary>
        public abstract string DetailUrl { get; }
        /// <summary>
        /// 后台分类默认列表。
        /// </summary>
        public abstract string BackendUrl { get; }
        /// <summary>
        /// 后台编辑地址。
        /// </summary>
        public abstract string BackendEditUrl { get; }
        /// <summary>
        /// 前台子项分页地址。
        /// </summary>
        public abstract string BackendPagerUrl { get; }
        /// <summary>
        /// 发布地址。
        /// </summary>
        public abstract string BackendPublicUrl { get; }
        /// <summary>
        /// 是否为系统模型。
        /// </summary>
        public virtual Version Version { get { return typeof(T).Assembly.GetName().Version; } }
        /// <summary>
        /// 分类表格名称，包含前缀，如："moz_"。
        /// </summary>
        public abstract string CategoryTableName { get; }
        /// <summary>
        /// 模型子项（产品）表格名称，包含前缀，如："moz_"。
        /// </summary>
        public abstract string ItemTableName { get; }
        /// <summary>
        /// 是否激活。
        /// </summary>
        public virtual bool Enabled { get { return true; } }
        /// <summary>
        /// 注册路由。
        /// </summary>
        /// <param name="routes">路由操作实例。</param>
        public abstract void RegisterRoutes(System.Web.Routing.RouteCollection routes);
    }
}
